import {httpPost,httpGet,httpPut,httpDelete} from "../servers/http"
type int = number;
		type List<T> = Array<T>
		type Collection<T> = Array<T>
		
type JsonNode = any
type long = number
interface KeyValueDTO<T,T1>{key:T,value:T1}
export interface BaseSearchModel {
  /** 数据Kid */
  kid?: number
  length?: number
  /** 模糊词 */
  name?: string
}

export interface CommunityPostSearchVO {
  /** 所属圈子KID */
  circleId?: number
  /** 是否评论（0否，1是） */
  commentFlag?: number
  /** 评论数 */
  comments?: number
  /** 创建时间 */
  createDate?: string
  /** 创建人ID */
  createUserId?: number
  /** 是否收藏（0否，1是） */
  favoriteFlag?: number
  /** 收藏数 */
  favorites?: number
  /** 动态图片 */
  images?: string
  /** 唯一ID */
  kid?: number
  /** 最后修改时间 */
  lastUpdateDate?: string
  /** 是否点赞（0否，1是） */
  likeFlag?: number
  /** 点赞数 */
  likes?: number
  /** 是否仅自己可见 0:否 1:是 */
  selfFlag?: number
  /** 帖子文本 */
  texts?: string
  /** 置顶 0:不置顶 1:置顶 */
  topIndexFlag?: number
  /** 所属话题KID */
  topicId?: number
  /** 所属小组名称 */
  topicName?: string
  /** 创建人图像 */
  userImg?: string
  /** 创建人名称 */
  userName?: string
  /** 创建人昵称 */
  userNickName?: string
  /** 浏览数 */
  views?: number
}

export interface PageList<T> {
  /** 数据总条数，前端接口可忽略改字段 */
  count?: number
  /** 数据集合 */
  entities?: T[]
  /** 当前页码 */
  pageNo?: number
  /** 每页条数 */
  pageSize?: number
}

export interface CommunityPostSearchDTO {
  /** 搜索关键词 */
  keyword?: string
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
}

export interface CourseLiveEsInfoVO {
  buyFlag?: boolean
  /** 课程分类 */
  category?: string
  commentCount?: number
  /** 是否完结 */
  completed?: number
  /** 课程价格 */
  coursePrice?: number
  /** 课程类型 1:视频 2:音频 3:直播 */
  courseType?: number
  /** 课程封面 */
  coverPhoto?: string
  createDate?: string
  /** 结束时间 */
  endTime?: string
  /** 是否热门 0:正常 1:热门 */
  hotFlag?: number
  /** kid */
  id?: number
  /** 课程亮点 */
  introduction?: string
  /** 讲师 */
  lecturer?: number
  lecturerName?: string
  /** 是否精选 0:不推荐 1:推荐 */
  recommandFlag?: number
  /** 开始时间 */
  startTime?: string
  /** 状态 */
  status?: number
  /** 名称 */
  subTheme?: string
  /** 名称 */
  theme?: string
  viewCount?: number
}

export interface GroupDynamicSearchVO {
  /** 是否评论（0否，1是） */
  commentFlag?: number
  /** 评论数 */
  comments?: number
  /** 创建时间 */
  createDate?: string
  /** 是否收藏（0否，1是） */
  favoriteFlag?: number
  /** 收藏数 */
  favorites?: number
  /** 是否仅小组成员可见 0:否 1:是 */
  groupFlag?: number
  /** 所属小组KID */
  groupKid?: number
  /** 所属小组名称 */
  groupName?: string
  /** 动态图片 */
  images?: string
  /** 唯一ID */
  kid?: number
  /** 最后修改时间 */
  lastUpdateDate?: string
  /** 是否点赞（0否，1是） */
  likeFlag?: number
  /** 点赞数 */
  likes?: number
  /** 动态标题 */
  title?: string
  /** 置顶 0:不置顶 1:置顶 */
  topFlag?: number
  /** 创建人ID */
  userId?: number
  /** 创建人图像 */
  userImg?: string
  /** 创建人名称 */
  userName?: string
  /** 创建人昵称 */
  userNickName?: string
  /** 浏览数 */
  views?: number
}

export interface GroupDynamicSearchDTO {
  /** 搜索关键词 */
  keyword?: string
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
}

export interface GroupSearchVO {
  /** 小组简介 */
  groupDescribe?: string
  /** 小组头像 */
  groupImage?: string
  /** 小组名称 */
  groupName?: string
  /** 小组成员数量 */
  groupUserCount?: number
  /** 小组成员昵称 */
  groupUserNickname?: string
  /** 小组KID */
  kid?: number
  /** 当前用户加入状态 1 已加入 0未加入 */
  wasJoin?: number
}

export interface GroupSearchDTO {
  /** 小组名 */
  groupName?: string
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
}

export interface GroupUserSearchVO {
  /** 删除标识 0正常 1已删除 */
  delFlag?: number
  /** 关联小组id */
  groupId?: number
  /** 小组用户角色 0 普通用户 1 管理员 2 组长 */
  groupUserRoleName?: string
  /** 小组成员KID */
  kid?: number
  /** 是否关注（0未关注,1已关注,3互相关注） */
  status?: number
  /** 成员状态 0正常 1移出 */
  useFlag?: number
  /** 用户ID */
  userId?: number
  /** 头像 */
  userImg?: string
  /** 成员昵称 */
  userName?: string
}

export interface GroupUserSearchDTO {
  /** 关联小组id */
  groupId?: number
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
  /** 小组成员名称 */
  userName?: string
}

export interface HotDataVO {
  /** 热门食谱 */
  cookingEsInfoList?: CookingEsInfo[]
  /** 课程 */
  courseList?: CourseHotListDataVO[]
  /** 热门食材 */
  foodEsInfoList?: FoodEsInfo[]
  /** 热门资讯 */
  newsEsInfoList?: NewsEsInfo[]
  /** 热门商品 */
  productVOS?: ProductVO[]
}

export interface CookingEsInfo {
  adUrl?: string
  classifyKid?: number
  commentsNumber?: number
  /** 封面图 */
  coverImg?: string
  createDate?: string
  duration?: number
  endTime?: string
  foodKid?: number
  hotFlag?: number
  id?: number
  lastUpdateDate?: string
  merits?: string
  recommendFlag?: number
  resourceUrl?: string
  shaveFlag?: number
  sort?: number
  startTime?: string
  step?: string
  tags?: string
  /** 标题 */
  title?: string
  type?: number
}

export interface CourseHotListDataVO {
  /** 课程分类 */
  category?: string
  /** 评论数 */
  commentCount?: number
  /** 是否完结 */
  completed?: number
  /** 课程价格 */
  coursePrice?: number
  /** 课程类型 1:视频 2:音频 3:直播 */
  courseType?: number
  /** 课程封面 */
  coverPhoto?: string
  createDate?: string
  /** 结束时间 */
  endTime?: string
  /** 是否热门 0:正常 1:热门 */
  hotFlag?: number
  /** kid */
  id?: number
  /** 课程亮点 */
  introduction?: string
  /** 加入学习人数 */
  joinCount?: number
  /** 讲师 */
  lecturer?: number
  /** 在线人数 */
  onlines?: number
  /** 是否精选 0:不推荐 1:推荐 */
  recommandFlag?: number
  /** 开始时间 */
  startTime?: string
  /** 状态 */
  status?: number
  /** 名称 */
  subTheme?: string
  /** 名称 */
  theme?: string
  /** 浏览数 */
  viewCount?: number
}

export interface FoodEsInfo {
  /** 食材名 */
  chName?: string
  classifyKid?: number
  classifyName?: string
  commentsNumber?: number
  comps?: FoodEsComp[]
  coverImgUrl?: string
  createDate?: string
  description?: string
  detail?: string
  detailImgUrls?: string
  effect?: string
  enName?: string
  firstSpell?: string
  forbid?: string
  hotFlag?: number
  id?: number
  lastUpdateDate?: string
  preserve?: string
  shaveFlag?: number
  sort?: number
  suggest?: string
  tagKids?: number[]
  tags?: string
  unitConvert?: OptionalUnit[]
  usageInfo?: string
}

export interface FoodEsComp {
  /** 成份别名 */
  alias?: string
  /** 成份名称 */
  name?: string
  /** 标准单位 */
  normalUnit?: string
  /** 标准值 */
  normalValue?: string
}

export interface OptionalUnit {
  /** 换算单位 */
  convertUnit?: string
  /** 换算值 */
  convertValue?: number
  /** 默认标识 0:非默认 1:默认 */
  defaultFlag?: number
  /** 计量单位 */
  foodUnit?: string
}

export interface NewsEsInfo {
  author?: string
  classifyKid?: number
  classifyName?: string
  commentsNumber?: number
  content?: string
  coverImgUrl?: string
  createDate?: string
  /** 摘要 */
  description?: string
  duration?: number
  hotFlag?: number
  id?: number
  lastUpdateDate?: string
  shaveFlag?: number
  sort?: number
  /** 来源 */
  source?: string
  tags?: string
  /** 标题 */
  title?: string
  topFlag?: number
  /** 资源类型 0图文 1视频 */
  type?: number
  typeSetting?: number
  /** 资源url */
  url?: string
}

export interface ProductVO {
  /** 三品 */
  grades?: string
  /** 分布式唯一ID */
  kid?: number
  /** 封面图片 */
  mainPic?: string
  /** 原价【冗余SKU最低价】 */
  originalPrice?: number
  /** 预售结束时间 */
  preSaleEndTime?: string
  /** 预售开始时间 */
  preSaleStartTime?: string
  /** 状态  1.预售中 2.已取消 3.已结束 */
  preSaleState?: number
  /** 商品名 */
  productName?: string
  /** 促销价格【冗余SKU最低价】 */
  salePrice?: number
  /** 一标 */
  standard?: string
}

export interface LecturerSearchVO {
  /** 创建时间 */
  createDate?: string
  /** 关注状态 0无关系 1我关注的 2关注我的 3互相关注 */
  followFlag?: number
  /** kid */
  kid?: number
  /** 讲师推荐 0不推荐 1推荐 */
  recommendFlag?: number
  /** 简介 */
  userDesc?: string
  /** 用户id */
  userId?: number
  /** 头像 */
  userImg?: string
  /** 姓名 */
  userName?: string
  /** 讲师擅长领域 */
  userSpecial?: string
  /** 讲师单位 */
  userUnit?: string
}

export interface Diet {
  /** 成份 */
  dietComps?: DietComp[]
  /** 名称 */
  dietName?: string
  /** 食谱总重量(可选，打卡) */
  dietWeight?: number
  /** 份数 */
  quality?: number
  /** 食谱单位(份/克) */
  qualityUnit?: string
  /** 食谱标识（可选，打卡) */
  recipeKid?: number
  /** 食物排序（可选，打卡） */
  sort?: number
}

export interface DietComp {
  /** 标识 */
  foodKid?: number
  /** 名称 */
  foodName?: string
  /** 可选单位集 */
  optionalUnits?: OptionalUnit[]
  /** 膳食分量占比 */
  percent?: number
  /** 默认单位(个/碗/盘.....) */
  unit?: string
  /** 摄入量 */
  weight?: number
}

export interface ProductSearchNewDTO {
  /** 认证类型 0 无公害 1 绿色 2 有机 3地理(与)  */
  certTypeList?: number[]
  /** 当前城市code */
  cityCode?: string
  /** 排序方向类型 1.倒序 2.顺序 */
  destType?: number
  /** 是否专家推荐:0 不是 1 是 */
  kol?: number
  /** 排序类型 1.人气排序 2.价格排序 */
  orderByType?: number
  /** 页码 */
  pageNo?: number
  /** 页面大小 */
  pageSize?: number
  /** 价格区间结束 单位：分  */
  priceLimitEnd?: number
  /** 价格区间开始  单位：分 */
  priceLimitStart?: number
  /** 商品所属分类ID列表(与) */
  productCategoryId?: number[]
  /** 商品所属一级分类ID列表(与) */
  productCategoryParentIds?: number[]
  /** 商品名 */
  productName?: string
  /** 专题ID */
  subjectId?: number
}

export interface ShopSearchVO {
  /** 图片 */
  imageUrl?: string
  /** 数据Kid */
  kid?: number
  /** 店铺名 */
  shopName?: string
}

export interface ShopSearchDTO {
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
  /** 店铺名 */
  shopName?: string
}

export interface TopicSearchVO {
  /** id */
  kid?: number
  /** 话题名称 */
  topicName?: string
  /** 话题内帖子数 */
  topicPost?: string
  /** 话题参与用户数 */
  topicUsers?: string
}

export interface TopicSearchDTO {
  /** 页码 */
  pageNo?: number
  /** 每页数据 */
  pageSize?: number
  /** 小组名 */
  topicName?: string
}
export default {
  baseSearchs: {
    /**
    * 搜索模糊搜索词
    */
    list(baseSearchModel: BaseSearchModel): Promise<List<BaseSearchModel>> {
      return httpPost(`/search/v1.4/pb/base-searchs/action/list`, baseSearchModel).then((res) => res.data)
    },
  },
  communityPosts: {
    /**
    * 社区帖子搜索
    */
    search(searchDTO: CommunityPostSearchDTO): Promise<PageList<CommunityPostSearchVO>> {
      return httpPost(`/search/v1.4/pb/community-posts/action/search`, searchDTO).then((res) => res.data)
    },
  },
  courseSearch: {
    /**
    * 课程&直播关键字搜索
    */
    searchcourse(params: { keyword?: string, lecturer?: number, pageNo?: number, pageSize?: number, status?: number }): Promise<PageList<CourseLiveEsInfoVO>> {
      return httpGet(`/search/v1.4/pb/course-search/action/searchcourse`,  {params} ).then((res) => res.data)
    },
  },
  groupDynamic: {
    /**
    * 小组动态搜索
    */
    search(searchDTO: GroupDynamicSearchDTO): Promise<PageList<GroupDynamicSearchVO>> {
      return httpPost(`/search/v1.4/pb/group-dynamic/action/search`, searchDTO).then((res) => res.data)
    },
  },
  groupSearchs: {
    /**
    * 小组搜索
    */
    list(groupSearchDTO: GroupSearchDTO): Promise<PageList<GroupSearchVO>> {
      return httpPost(`/search/v1.4/pb/group-searchs/action/list`, groupSearchDTO).then((res) => res.data)
    },
  },
  groupUseSearchs: {
    /**
    * 小组成员搜索
    */
    list(groupUserSearchDTO: GroupUserSearchDTO): Promise<PageList<GroupUserSearchVO>> {
      return httpPost(`/search/v1.4/pb/groupUse-searchs/action/list`, groupUserSearchDTO).then((res) => res.data)
    },
  },
  healths: {
    /**
    * 健康检查
    */
    check(): Promise<boolean> {
      return httpGet(`/search/v1.4/pb/healths/action/check`).then((res) => res.data)
    },
  },
  hotSearch: {
    /**
    * 热门数据搜索
    */
    searchHotData(): Promise<HotDataVO> {
      return httpGet(`/search/v1.4/pb/hot-search/action/searchHotData`).then((res) => res.data)
    },
  },
  lecturerInfos: {
    /**
    * APP讲师搜索
    */
    recommendSearch(params: { keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<LecturerSearchVO>> {
      return httpGet(`/search/v1.4/pb/lecturer-infos/action/recommend-search`,  {params} ).then((res) => res.data)
    },
  },
  nutritionSearch: {
    /**
    * 搜索膳食数据【每日打卡】
    */
    searchDiet(params: { keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<Diet>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchDiet`,  {params} ).then((res) => res.data)
    },
    /**
    * 搜索膳食数据-菜谱更多【每日打卡】
    */
    searchDietCooking(params: { keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<Diet>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchDietCooking`,  {params} ).then((res) => res.data)
    },
    /**
    * 搜索膳食数据-食材更多【每日打卡】
    */
    searchDietFood(params: { keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<Diet>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchDietFood`,  {params} ).then((res) => res.data)
    },
    /**
    * 烹饪关键字搜索
    */
    searchcooking(params: { classfyKid?: number, isOrderByHot?: boolean, isStatics?: boolean, keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<CookingEsInfo>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchcooking`,  {params} ).then((res) => res.data)
    },
    /**
    * 食材关键字搜索
    */
    searchfood(params: { classfyKid?: number, isOrderByHot?: boolean, isStatics?: boolean, keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<FoodEsInfo>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchfood`,  {params} ).then((res) => res.data)
    },
    /**
    * 资讯关键字搜索
    */
    searchnews(params: { classfyKid?: number, isOrderByHot?: boolean, isStatics?: boolean, keyword?: string, pageNo?: number, pageSize?: number }): Promise<PageList<NewsEsInfo>> {
      return httpGet(`/search/v1.4/pb/nutrition-search/action/searchnews`,  {params} ).then((res) => res.data)
    },
  },
  products: {
    /**
    * 商品搜索v1.2
    */
    search(productSearchNewDTO: ProductSearchNewDTO): Promise<PageList<ProductVO>> {
      return httpPost(`/search/v1.4/pb/products/action/search`, productSearchNewDTO).then((res) => res.data)
    },
    /**
    * 商品搜索高亮v1.2
    */
    search_for_app(productSearchNewDTO: ProductSearchNewDTO): Promise<PageList<ProductVO>> {
      return httpPost(`/search/v1.4/pb/products/action/search_for_app`, productSearchNewDTO).then((res) => res.data)
    },
  },
  shopSearchs: {
    /**
    * 店铺搜索
    */
    list(shopSearchDTO: ShopSearchDTO): Promise<PageList<ShopSearchVO>> {
      return httpPost(`/search/v1.4/pb/shop-searchs/action/list`, shopSearchDTO).then((res) => res.data)
    },
  },
  topicSearchs: {
    /**
    * 社区话题搜索
    */
    list(topicSearchDTO: TopicSearchDTO): Promise<PageList<TopicSearchVO>> {
      return httpPost(`/search/v1.4/pb/topic-searchs/action/list`, topicSearchDTO).then((res) => res.data)
    },
  },
}